package com.sunjob.mroresource.service;

import com.sunjob.common.domain.resource.Staff;
import com.sunjob.common.domain.resource.StaffPosition;
import com.sunjob.common.domain.resource.StaffTitle;
import com.sunjob.common.domain.resource.StaffType;

import java.util.List;

/**
 * @author: TomHuang
 * @date: 2022/8/11 9:05
 */
public interface StaffService {

    //根据员工ID查询员工相关信息
    public Staff selectStaffById(Long staffId);

    //根据员工工号查询员工相关信息
    Staff selectStaffByStaffJobId(String staffJobId);

    //根据员工名字模糊查询员工相关信息
    List<Staff> selectStaffByStaffName(String staffName);

    //根据员工ID、员工工号、员工名字联合查询员工相关信息
    Staff selectStaffBy(Long staffId, String staffJobId, String staffName);

    //查询所有员工
    List<Staff> selectAllStaff();

    //查询所有员工数量
    int selectStaffCount();

    //添加员工
    int insertStaff(Staff staff);

    //查询所有员工类型
    List<String> selectAllStaffType();

    //添加员工类型
    int insertStaffType(StaffType staffType);

    //查询所有员工职位
    List<String> selectAllStaffPosition();

    //添加员工职位
    int insertStaffPosition(StaffPosition staffPosition);

    //查询所有员工职位
    List<String> selectAllStaffTitle();

    //添加技术职称
    int insertStaffTitle(StaffTitle staffTitle);

    //修改员工相关信息
    int updateStaff(Staff staff);

    //根据员工ID修改员工状态0-在岗、1-离职、2-请假、3-休假
    int updateStaffStatus(Long staffId,int staffStatus);

    //根据员工Id查询员工类型
    String selectTypeByStaffId(Long staffId);

    //根据员工Id查询员工职位
    String selectPositionByStaffId(Long staffId);

    //根据员工Id查询员工技术职称
    String selectTitleByStaffId(Long staffId);

    //获取最大员工类型Id
    int selectBiggestTypeId();

    //获取最大员工职位Id
    int selectBiggestPositionId();

    //获取最大员工技术职称Id
    int selectBiggestTitleId();


}
